package com.ikingtech.framework.sdk.enums.system.menu;

import com.ikingtech.framework.sdk.enums.application.EmbeddedApplicationEnum;
import com.ikingtech.framework.sdk.enums.domain.DomainEnum;
import com.ikingtech.framework.sdk.utils.Tools;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

import java.util.List;

import static com.ikingtech.framework.sdk.enums.system.menu.PlatformMenuEnum.MenuConstants.*;

/**
 * @author tie yan
 */
@RequiredArgsConstructor
public enum PlatformMenuEnum implements MenuDefinition {

    SYSTEM(null,
            null,
            "系统管理",
            "System Management",
            "SYSTEM",
            "SYSTEM",
            Integer.MAX_VALUE,
            "",
            true,
            true,
            true,
            "iksvg_xitongguanli",
            "",
            "",
            "/system-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.NONE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM, DomainEnum.TENANT)),

    USER(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "用户管理",
            "User",
            "USER",
            SYSTEM.fullPath + "@USER",
            1,
            "system-manage/user-manage/user.vue",
            true,
            true,
            true,
            "iksvg_yonghu",
            "",
            "",
            "system-manage/user-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM, DomainEnum.TENANT)),

    ADD_USER(SYSTEM.appCode,
            USER.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-USER",
            USER.fullPath + "@ADD-USER",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    DELETE_USER(SYSTEM.appCode,
            USER.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-USER",
            USER.fullPath + "@DELETE-USER",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    UPDATE_USER(SYSTEM.appCode,
            USER.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-USER",
            USER.fullPath + "@UPDATE-USER",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    USER_DETAIL(SYSTEM.appCode,
            USER.permissionCode,
            "详情",
            "detail",
            "USER-DETAIL",
            USER.fullPath + "@USER-DETAIL",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    USER_RESET_PASSWORD(SYSTEM.appCode,
            USER.permissionCode,
            "重置密码",
            "reset password",
            "USER-RESET-PASSWORD",
            USER.fullPath + "@USER-RESET-PASSWORD",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    QUERY_USER(SYSTEM.appCode,
            USER.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-USER",
            USER.fullPath + "@QUERY-USER",
            6,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    LOCK_USER(SYSTEM.appCode,
            USER.permissionCode,
            "锁定",
            "lock",
            "LOCK-USER",
            USER.fullPath + "@LOCK-USER",
            7,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            USER.initDomains),

    ROLE(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "角色管理",
            "Role",
            "ROLE",
            SYSTEM.fullPath + "@ROLE",
            2,
            "system-manage/role-manage/role.vue",
            true,
            true,
            true,
            "iksvg_jiaoseguanli",
            "",
            "",
            "system-manage/role-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM, DomainEnum.TENANT)),

    ADD_ROLE(ROLE.appCode,
            ROLE.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-ROLE",
            ROLE.fullPath + "@ADD-ROLE",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    DELETE_ROLE(ROLE.appCode,
            ROLE.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-ROLE",
            ROLE.fullPath + "@DELETE-ROLE",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    UPDATE_ROLE(ROLE.appCode,
            ROLE.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-ROLE",
            ROLE.fullPath + "@UPDATE-ROLE",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    QUERY_ROLE(ROLE.appCode,
            ROLE.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-ROLE",
            ROLE.fullPath + "@QUERY-ROLE",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    ROLE_MENU(ROLE.appCode,
            ROLE.permissionCode,
            "角色菜单",
            "Role Menu",
            "ROLE-MENU",
            ROLE.fullPath + "@ROLE-MENU",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_TAB,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    ROLE_USER(ROLE.appCode,
            ROLE.permissionCode,
            "角色用户",
            "Role User",
            "ROLE-USER",
            ROLE.fullPath + "@ROLE-USER",
            6,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_TAB,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    UPDATE_ROLE_MENU(ROLE.appCode,
            ROLE.permissionCode,
            "保存",
            "save",
            "UPDATE-ROLE-MENU",
            ROLE.fullPath + "@UPDATE-ROLE-MENU",
            7,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            ROLE.initDomains),

    UPDATE_ROLE_USER(ROLE.appCode,
            ROLE.permissionCode,
            "保存",
            "save",
            "UPDATE-ROLE_USER",
            ROLE.fullPath + "@UPDATE-ROLE-USER",
            8,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    MENU(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "菜单管理",
            "Menu",
            "MENU",
            SYSTEM.fullPath + "@MENU",
            3,
            "system-manage/menu-manage/menu.vue",
            true,
            true,
            true,
            "iksvg_caidanguanli",
            "",
            "",
            "system-manage/menu-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    ADD_MENU(MENU.appCode(),
            MENU.permissionCode,
            "新增",
            "add",
            "ADD-MENU",
            MENU.fullPath + "@ADD-MENU",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    ADD_CHILD_MENU(MENU.appCode,
            MENU.permissionCode,
            "新增子菜单",
            "add sub menu",
            "ADD-CHILD-MENU",
            MENU.fullPath + "@ADD-CHILD-MENU",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    DELETE_MENU(MENU.appCode,
            MENU.permissionCode,
            "删除",
            MenuConstants.BUTTON_EU_NAME_DELETE,
            "DELETE-MENU",
            MENU.fullPath + "@DELETE-MENU",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    UPDATE_MENU(MENU.appCode,
            MENU.permissionCode,
            "编辑",
            MenuConstants.BUTTON_EU_NAME_UPDATE,
            "UPDATE-MENU",
            MENU.fullPath + "@UPDATE-MENU",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    QUERY_MENU(MENU.appCode,
            MENU.permissionCode,
            "查询",
            MenuConstants.BUTTON_EU_NAME_SEARCH,
            "QUERY-MENU",
            MENU.fullPath + "@QUERY-MENU",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    SORT_MENU(MENU.appCode,
            MENU.permissionCode,
            "排序",
            "sort",
            "SORT-MENU",
            MENU.fullPath + "@SORT-MENU",
            6,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MENU.initDomains),

    DEPT(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "部门管理",
            "Department",
            "DEPT",
            SYSTEM.fullPath + "@DEPT",
            3,
            "system-manage/department-manage/department.vue",
            true,
            true,
            true,
            "iksvg_bumenguanli",
            "",
            "",
            "system-manage/dep-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    ADD_DEPT(SYSTEM.appCode,
            DEPT.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-DEPT",
            DEPT.fullPath + "@ADD-DEPT",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DEPT.initDomains),

    DELETE_DEPT(SYSTEM.appCode,
            DEPT.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-DEPT",
            DEPT.fullPath + "@DELETE-DEPT",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DEPT.initDomains),

    UPDATE_DEPT(SYSTEM.appCode,
            DEPT.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-DEPT",
            DEPT.fullPath + "@UPDATE-DEPT",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DEPT.initDomains),

    QUERY_DEPT(SYSTEM.appCode,
            DEPT.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-DEPT",
            DEPT.fullPath + "@QUERY-DEPT",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DEPT.initDomains),

    POST(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "岗位管理",
            "Post",
            "POST",
            SYSTEM.fullPath + "@POST",
            4,
            "system-manage/post-manage/post.vue",
            true,
            true,
            true,
            "iksvg_gangweiguanli",
            "",
            "",
            "system-manage/post-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    ADD_POST(POST.appCode,
            POST.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-POST",
            POST.fullPath + "@ADD-POST",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            POST.initDomains),

    DELETE_POST(POST.appCode,
            POST.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-POST",
            POST.fullPath + "@DELETE-POST",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            POST.initDomains),

    UPDATE_POST(POST.appCode,
            POST.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-POST",
            POST.fullPath + "@UPDATE-POST",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            POST.initDomains),

    QUERY_POST(POST.appCode,
            POST.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-POST",
            POST.fullPath + "@QUERY-POST",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            POST.initDomains),

    DICT(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "字典管理",
            "Dictionary",
            "DICT",
            SYSTEM.fullPath + "@DICT",
            5,
            "system-manage/dictionary-manage/dictionary.vue",
            true,
            true,
            true,
            "iksvg_zidianguanli",
            "",
            "",
            "system-manage/dictionary-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    ADD_DICT(POST.appCode,
            DICT.permissionCode,
            "新增字典",
            BUTTON_EU_NAME_ADD,
            "ADD-DICT",
            DICT.fullPath + "@ADD-DICT",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    DELETE_DICT(POST.appCode,
            DICT.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-DICT",
            DICT.fullPath + "@DELETE-DICT",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    UPDATE_DICT(POST.appCode,
            DICT.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-DICT",
            DICT.fullPath + "@UPDATE-DICT",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    QUERY_DICT(SYSTEM.appCode,
            DICT.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-DICT",
            DICT.fullPath + "@QUERY-DICT",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    ADD_DICT_ITEM(SYSTEM.appCode,
            DICT.permissionCode,
            "新增字典项",
            BUTTON_EU_NAME_ADD,
            "ADD-DICT-ITEM",
            DICT.fullPath + "@ADD-DICT-ITEM",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    ADD_CHILD_DICT_ITEM(SYSTEM.appCode,
            DICT.permissionCode,
            "新增子项",
            "add sub",
            "ADD-CHILD-DICT-ITEM",
            DICT.fullPath + "@ADD-CHILD-DICT-ITEM",
            6,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    DELETE_DICT_ITEM(SYSTEM.appCode,
            DICT.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-DICT-ITEM",
            DICT.fullPath + "@DELETE-DICT-ITEM",
            7,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    UPDATE_DICT_ITEM(SYSTEM.appCode,
            DICT.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-DICT-ITEM",
            DICT.fullPath + "@UPDATE-DICT-ITEM",
            8,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    QUERY_DICT_ITEM(SYSTEM.appCode,
            DICT.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-DICT-ITEM",
            DICT.fullPath + "@QUERY-DICT-ITEM",
            9,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DICT.initDomains),

    PARAM(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "参数管理",
            "Parameter",
            "PARAM",
            SYSTEM.fullPath + "@PARAM",
            6,
            "system-manage/params-manage/params.vue",
            true,
            true,
            true,
            "iksvg_canshuguanli",
            "",
            "",
            "system-manage/params-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    ADD_PARAM(SYSTEM.appCode,
            PARAM.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-PARAM",
            PARAM.fullPath + "@ADD-PARAM",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            PARAM.initDomains),

    DELETE_PARAM(SYSTEM.appCode,
            PARAM.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-PARAM",
            PARAM.fullPath + "@DELETE-PARAM",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            PARAM.initDomains),

    UPDATE_PARAM(SYSTEM.appCode,
            PARAM.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-PARAM",
            PARAM.fullPath + "@UPDATE-PARAM",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            PARAM.initDomains),

    QUERY_PARAM(SYSTEM.appCode,
            PARAM.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-PARAM",
            PARAM.fullPath + "@QUERY-PARAM",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            PARAM.initDomains),

    LOG(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "日志管理",
            "Log",
            "LOG",
            SYSTEM.fullPath + "@LOG",
            7,
            "system-manage/log-manage/log.vue",
            true,
            true,
            true,
            "iksvg_rizhiguanli",
            "",
            "",
            "system-manage/log-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            true,
            Tools.Coll.newList(DomainEnum.TENANT)),

    QUERY_LOG(LOG.appCode,
            LOG.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-LOG",
            LOG.fullPath + "@QUERY-LOG",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            LOG.initDomains),

    DETAIL_LOG(LOG.appCode,
            LOG.permissionCode,
            "日志详情",
            "detail",
            "DETAIL-LOG",
            LOG.fullPath + "@DETAIL-LOG",
            2,
            "system-manage/log-manage/logDetail.vue",
            true,
            false,
            false,
            "",
            "",
            "",
            "log-detail",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.NONE,
            false,
            LOG.initDomains),

    TENANT(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "租户管理",
            "Tenant",
            "TENANT",
            SYSTEM.fullPath + "@TENANT",
            8,
            "tenant/tenant-manage/tenant.vue",
            true,
            true,
            true,
            "iksvg_zuhuguanli",
            "",
            "",
            "system-manage/tenant/tenant-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    ADD_TENANT(SYSTEM.appCode,
            TENANT.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-TENANT",
            TENANT.fullPath + "@ADD-TENANT",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    DELETE_TENANT(SYSTEM.appCode,
            TENANT.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-TENANT",
            TENANT.fullPath + "@DELETE-TENANT",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    UPDATE_TENANT(TENANT.appCode,
            TENANT.permissionCode,
            "编辑",
            "update",
            "UPDATE-TENANT",
            TENANT.fullPath + "@UPDATE-TENANT",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    UPDATE_TENANT_LAYOUT(TENANT.appCode,
            TENANT.permissionCode,
            "名称和图标",
            "name&icon",
            "UPDATE-TENANT-LAYOUT",
            TENANT.fullPath + "@UPDATE-TENANT-LAYOUT",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    TENANT_ADMIN_RESET_PASSWORD(TENANT.appCode,
            TENANT.permissionCode,
            "管理员密码重置",
            "reset password",
            "TENANT-ADMIN-RESET_PASSWORD",
            TENANT.fullPath + "@TENANT-ADMIN-RESET-PASSWORD",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    QUERY_TENANT(TENANT.appCode,
            TENANT.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-TENANT",
            TENANT.fullPath + "@QUERY-TENANT",
            6,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            TENANT.initDomains),

    DATASOURCE(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "数据源管理",
            "Datasource",
            "DATASOURCE",
            SYSTEM.fullPath + "@DATASOURCE",
            9,
            "system-manage/datasource-manage/datasource.vue",
            true,
            true,
            true,
            "iksvg_shuju",
            "",
            "",
            "system-manage/datasource-manage",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    ADD_DATASOURCE(DATASOURCE.appCode,
            DATASOURCE.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-DATASOURCE",
            DATASOURCE.fullPath + "@ADD-DATASOURCE",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DATASOURCE.initDomains),

    DELETE_DATASOURCE(DATASOURCE.appCode,
            DATASOURCE.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-DATASOURCE",
            DATASOURCE.fullPath + "@DELETE-DATASOURCE",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DATASOURCE.initDomains),

    UPDATE_DATASOURCE(DATASOURCE.appCode,
            DATASOURCE.permissionCode,
            "编辑",
            "update",
            "UPDATE-DATASOURCE",
            DATASOURCE.fullPath + "@UPDATE-DATASOURCE",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DATASOURCE.initDomains),

    QUERY_DATASOURCE(DATASOURCE.appCode,
            DATASOURCE.permissionCode,
            "查询",
            "search",
            "QUERY-DATASOURCE",
            DATASOURCE.fullPath + "@QUERY-DATASOURCE",
            4, "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            DATASOURCE.initDomains),

    PLATFORM_CONFIG(SYSTEM.appCode,
            SYSTEM.permissionCode,
            "平台配置",
            "Platform Config",
            "PLATFORM-CONFIG",
            SYSTEM.fullPath + "@PLATFORM-CONFIG",
            10,
            "system-manage/platform-manage/platform.vue",
            true,
            true,
            true,
            "iksvg_weihubaoyang",
            "",
            "",
            "system-manage/platform-config",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    WECHAT_MINI_CONFIG(PLATFORM_CONFIG.appCode,
            PLATFORM_CONFIG.permissionCode,
            "微信小程序",
            "Wechat Mini",
            "WECHAT-MINI-CONFIG",
            PLATFORM_CONFIG.fullPath + "@WECHAT-MINI-CONFIG",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_TAB,
            MenuJumpTypeEnum.NONE,
            false,
            PLATFORM_CONFIG.initDomains),

    DEV_CENTER(null,
            null,
            "开发中心",
            "Develop Center",
            "DEV-CENTER",
            "DEV-CENTER",
            1,
            "",
            true,
            true,
            true,
            "iksvg_xinghaoguanli",
            "",
            "",
            "/dev-center",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.NONE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    APP(DEV_CENTER.appCode(),
            DEV_CENTER.permissionCode,
            "应用开发",
            "App Develop",
            "APP-DEV",
            DEV_CENTER.fullPath() + "@APP-DEV",
            1,
            "application/index.vue",
            true,
            true,
            true,
            "iksvg_gongnengsheji",
            "",
            "",
            "dev-center/application/develop",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            Tools.Coll.newList(DomainEnum.PLATFORM)),

    ADD_APP(APP.appCode,
            APP.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-APP",
            APP.fullPath + "@ADD-APP",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            APP.initDomains),

    DELETE_APP(APP.appCode,
            APP.permissionCode,
            "删除",
            BUTTON_EU_NAME_DELETE,
            "DELETE-APP",
            APP.fullPath + "@DELETE-APP",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            APP.initDomains),

    UPDATE_APP(APP.appCode,
            APP.permissionCode,
            "编辑",
            BUTTON_EU_NAME_UPDATE,
            "UPDATE-APP",
            APP.fullPath + "@UPDATE-APP",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            APP.initDomains),

    CONFIG_APP(APP.appCode,
            APP.permissionCode,
            "配置",
            BUTTON_EU_NAME_UPDATE,
            "CONFIG-APP",
            APP.fullPath + "@CONFIG-APP",
            4,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            APP.initDomains),

    QUERY_APP(APP.appCode,
            APP.permissionCode,
            "查询",
            BUTTON_EU_NAME_SEARCH,
            "QUERY-APP",
            APP.fullPath + "@QUERY-APP",
            5,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            APP.initDomains),

    APPROVE_CENTER(EmbeddedApplicationEnum.APPROVE_CENTER.code,
            null,
            "审批中心",
            "Approve Center",
            "APPROVE-CENTER",
            "APPROVE-CENTER",
            Integer.MAX_VALUE - 2,
            "",
            true,
            true,
            true,
            "iksvg_shenpizhongxin",
            "",
            "",
            "/approve-center",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.NONE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),
    APPROVE_CONFIG(APPROVE_CENTER.appCode,
            APPROVE_CENTER.permissionCode,
            "审批配置",
            "Approve Config",
            "APPROVE-CONFIG",
            APPROVE_CENTER.fullPath + "@APPROVE-CONFIG",
            1,
            "approve-workflow/ApproveConfig/index.vue",
            true,
            true,
            true,
            "iksvg_xunxianjihua1",
            "",
            "",
            "approve-center/approve-configs",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            APPROVE_CENTER.initDomains),
    APPROVE_LIST(APPROVE_CENTER.appCode,
            APPROVE_CENTER.permissionCode,
            "审批列表",
            "Approve List",
            "APPROVE-LIST",
            APPROVE_CENTER.fullPath + "@APPROVE-LIST",
            2,
            "approve-workflow/ApproveList/index.vue",
            true,
            true,
            true,
            "iksvg_shenpiliebiao",
            "",
            "",
            "approve-center/approve-list",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            APPROVE_CENTER.initDomains),

    MESSAGE_CENTER(EmbeddedApplicationEnum.MESSAGE_CENTER.code,
            null,
            "消息中心",
            "Message Center",
            "MESSAGE-CENTER",
            "MESSAGE-CENTER",
            Integer.MAX_VALUE - 1,
            "",
            true,
            true,
            true,
            "iksvg_xinxi1",
            "",
            "",
            "/news-center",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.NONE,
            false,
            Tools.Coll.newList(DomainEnum.TENANT)),

    MESSAGE_TEMPLATE(MESSAGE_CENTER.appCode,
            MESSAGE_CENTER.permissionCode,
            "消息模板",
            "Message Template",
            "MESSAGE-TEMPLATE",
            MESSAGE_CENTER.fullPath + "@MESSAGE-TEMPLATE",
            1,
            "news-center/news-template/index.vue",
            true,
            true,
            true,
            "iksvg_xiaoximoban",
            "",
            "",
            "news-center/news-template",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            MESSAGE_CENTER.initDomains),

    ADD_NEWS_TEMP(MESSAGE_TEMPLATE.appCode,
            MESSAGE_TEMPLATE.permissionCode,
            "新增",
            BUTTON_EU_NAME_ADD,
            "ADD-NEWS-TEMP",
            MESSAGE_TEMPLATE.fullPath + "@ADD-NEWS-TEMP",
            1,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MESSAGE_TEMPLATE.initDomains),

    CONFIG_NEWS(MESSAGE_TEMPLATE.appCode,
            MESSAGE_TEMPLATE.permissionCode,
            "配置",
            "config template",
            "CONFIG-NEWS-TEMP",
            MESSAGE_TEMPLATE.fullPath + "@CONFIG-NEWS-TEMP",
            2,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MESSAGE_TEMPLATE.initDomains),

    DELETE_NEWS(MESSAGE_TEMPLATE.appCode,
            MESSAGE_TEMPLATE.permissionCode,
            "删除",
            "delete template",
            "DELETE-NEWS-TEMP",
            MESSAGE_TEMPLATE.fullPath + "@DELETE-NEWS-TEMP",
            3,
            "",
            false,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MESSAGE_TEMPLATE.initDomains),

    SEND_RECORD(MESSAGE_CENTER.appCode,
            MESSAGE_CENTER.permissionCode,
            "推送记录",
            "Send Record",
            "SEND-RECORD",
            MESSAGE_CENTER.fullPath + "@SEND-RECORD",
            2,
            "news-center/push-record/push.vue",
            true,
            true,
            true,
            "iksvg_yuanguanli",
            "",
            "",
            "news-center/push-record",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            MESSAGE_CENTER.initDomains),

    PERSONAL_MESSAGE(MESSAGE_CENTER.appCode,
            MESSAGE_CENTER.permissionCode,
            "个人消息",
            "Personal Message",
            "PERSONAL-MESSAGE",
            MESSAGE_CENTER.fullPath + "@PERSONAL-MESSAGE",
            3,
            "news-center/personal-news/personal.vue",
            true,
            true,
            true,
            "iksvg_xinxi1",
            "",
            "",
            "news-center/personal-news",
            MenuTypeEnum.MENU,
            MenuJumpTypeEnum.FRONT_ROUTE,
            false,
            MESSAGE_CENTER.initDomains),

    LOOK_PERSONAL_DETAIL(MESSAGE_CENTER.appCode,
            PERSONAL_MESSAGE.permissionCode,
            "查看",
            "detail",
            "LOOK-PERSONAL-DETAIL",
            PERSONAL_MESSAGE.fullPath + "@LOOK-PERSONAL-DETAIL",
            3,
            "",
            true,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MESSAGE_CENTER.initDomains),

    PROCESS_PERSONAL_NEWS(MESSAGE_CENTER.appCode,
            PERSONAL_MESSAGE.permissionCode,
            "去处理",
            "process",
            "PROCESS-PERSONAL-NEWS",
            PERSONAL_MESSAGE.fullPath + "@PROCESS-PERSONAL-NEWS",
            3,
            "",
            true,
            false,
            false,
            "",
            "",
            "",
            "",
            MenuTypeEnum.PAGE_BUTTON,
            MenuJumpTypeEnum.NONE,
            false,
            MESSAGE_CENTER.initDomains);

    private final String appCode;

    private final String parent;

    private final String description;

    private final String euName;

    private final String permissionCode;

    private final String fullPath;

    private final Integer sortOrder;

    private final String component;

    private final Boolean framework;

    private final Boolean sideBar;

    private final Boolean breadcrumb;

    private final String icon;

    private final String activeIcon;

    private final String logo;

    private final String link;

    private final MenuTypeEnum type;

    private final MenuJumpTypeEnum jumpType;

    private final Boolean keepAlive;

    private final List<DomainEnum> initDomains;

    @Override
    public String appCode() {
        return this.appCode;
    }

    @Override
    public String parent() {
        return this.parent;
    }

    @Override
    public String description() {
        return this.description;
    }

    @Override
    public String euName() {
        return this.euName;
    }

    @Override
    public String permissionCode() {
        return this.permissionCode;
    }

    @Override
    public String fullPath() {
        return this.fullPath;
    }

    @Override
    public Integer sortOrder() {
        return this.sortOrder;
    }

    @Override
    public String component() {
        return this.component;
    }

    @Override
    public Boolean framework() {
        return this.framework;
    }

    @Override
    public Boolean sidebar() {
        return this.sideBar;
    }

    @Override
    public Boolean breadcrumb() {
        return this.breadcrumb;
    }

    @Override
    public String icon() {
        return this.icon;
    }

    @Override
    public String activeIcon() {
        return this.activeIcon;
    }

    @Override
    public String logo() {
        return this.logo;
    }

    @Override
    public String iframe() {
        return Tools.Str.EMPTY;
    }

    @Override
    public String link() {
        return this.link;
    }

    @Override
    public MenuTypeEnum type() {
        return this.type;
    }

    @Override
    public MenuJumpTypeEnum jumpType() {
        return this.jumpType;
    }

    @Override
    public Boolean keepAlive() {
        return this.keepAlive;
    }

    @Override
    public List<DomainEnum> initDomains() {
        return this.initDomains;
    }

    @NoArgsConstructor
    static class MenuConstants {

        public static final String BUTTON_EU_NAME_ADD = "add";

        public static final String BUTTON_EU_NAME_DELETE = "delete";

        public static final String BUTTON_EU_NAME_UPDATE = "update";

        public static final String BUTTON_EU_NAME_SEARCH = "search";
    }
}
